// 7-1 改造字符串 (15分)
// 编写程序，从键盘输入一个字符串（长度不超过100），然后在两个字符之间插入一个空格，输出一个新字符串。

// 输入格式:
// 输入一个字符串，以回车符结束。

// 输出格式:
// 在两个字符之间插入一个空格，生成新的字符串，在一行中输出。注意：最后一个字符后无空格。

// 输入样例:
// 在这里给出一组输入。例如：

// aabbcc
// 输出样例:
// 在这里给出相应的输出。例如：

// a a b b c c

// #include <stdio.h>
// #include <string.h>
// #define MAXN 101
// int main()
// {
//     char str1[MAXN], new_str[2 * MAXN];
//     int idx = 0;
//     fgets(str1, MAXN, stdin);
//     while (str1[idx] != '\n')
//     {
//         idx++;
//     }
//     str1[idx] = '\0';
//     idx = 0;
//     new_str[0] = '\0';
//     for (int i = 0; i < strlen(str1); i++)
//     {
//         new_str[idx] = str1[i];
//         new_str[idx+1] = ' ';
//         idx += 2;
//     }
//     new_str[idx-1] = '\0';
//     printf("%s", new_str);

//     return 0;
// }

#include <stdio.h>
#include <string.h>
#define MAXN 102

char * s_gets(char * st, int n);
int main()
{
    static char str1[2 * MAXN];  // 另外一种写法:char str1[MAXN] = {'\0'}
    // 总之，要把str1里的元素都初始化为'\0',不然后面str1处理完后，不一定有字符串结束符
    s_gets(str1, MAXN);
    for (int i = strlen(str1) - 1; i > 0; i--)
    {
        str1[2*i] = str1[i];
        str1[2*i-1] = ' ';
    }
    printf("%s", str1);
    // printf("%d", strlen(str1));

    return 0;
}

char * s_gets(char * st, int n)
{
    int idx = 0;
    char * ret_val;
    ret_val = fgets(st, n, stdin);
    if (ret_val)
    {
        while (st[idx] != '\0' && st[idx] != '\n')
        {
            idx++;
        }
        if (st[idx] == '\n')
        {
            st[idx] = '\0';
        }
        else
        {
            while (getchar() != '\n')
            {
                continue;
            }
        }
    }

    return ret_val;
}